package com.robooot.business_counter.util;

import com.alibaba.nacos.api.config.annotation.NacosValue;
import com.robooot.business_counter.exception.BizException;
import com.robooot.common.core.util.DateFormatUtil;
import net.sf.json.JSONObject;
import org.apache.logging.log4j.util.Strings;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Component;
import org.springframework.util.DigestUtils;
import org.springframework.web.client.RestTemplate;

import java.text.MessageFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;

@Component
public class InternalHttpApi {

//    @Autowired
//    RestTemplate restTemplate;
//    @NacosValue(value = "${serverId}",autoRefreshed = true)
//    String serverId;
//    @NacosValue(value = "${apiKey}",autoRefreshed = true)
//    String apiKey;
//    @NacosValue(value = "${url.token}",autoRefreshed = true)
//    String token;
//    @NacosValue(value = "${url.getBaseUser}",autoRefreshed = true)
//    String getBaseUser;
//
//
//    public JSONObject token(String token) {
//        Map<String, String> params = new HashMap<>();
//        params.put("token", token);
//        return this.sendWithSign(token, params);
//    }
//
//    public JSONObject getBaseUser(String phone, String userId) {
//        Map<String, String> params = new HashMap<>();
//        if (Strings.isNotBlank(phone)) {
//            params.put("phone", phone);
//        }
//        if (Strings.isNotBlank(userId)) {
//            params.put("userId", userId);
//        }
//        return this.sendWithSign(getBaseUser, params);
//    }
//
//
//    /*带签名*/
//    public JSONObject sendWithSign(String url, Map params) {
//        String nonce = DateFormatUtil.formatDate(new Date(), "yyyyMMddHHmmss");
//        String signature = makeSign(serverId, apiKey, nonce);
//        params.put("serverId", serverId);
//        params.put("nonce", nonce);
//        params.put("signature", signature);
//        ResponseEntity<String> responseEntity = restTemplate.postForEntity(url, params, String.class);
//        JSONObject result = JsonUtil.jsonStr2Bean(responseEntity.getBody(), JSONObject.class);
//        if ((int) result.get("result") != 0) {
//            throw new BizException((int) result.get("result"), (String) result.get("message"));
//        }
//        return (JSONObject) result.get("data");
//    }
//
//    /*不带签名*/
//    public JSONObject sendNoSign(String url, Map params) {
//        ResponseEntity<String> responseEntity = restTemplate.postForEntity(url, params, String.class);
//        JSONObject result = JsonUtil.jsonStr2Bean(responseEntity.getBody(), JSONObject.class);
//        if ((int) result.get("result") != 0) {
//            throw new BizException((int) result.get("result"), (String) result.get("message"));
//        }
//        return (JSONObject) result.get("data");
//    }
//
//    // 生成签名
//    public static String makeSign(String serverId, String apiKey, String nonce) {
//        String unsigned = MessageFormat.format("serverId={0}&apiKey={1}&nonce={2}", serverId, apiKey, nonce);
//        return DigestUtils.md5DigestAsHex(unsigned.getBytes());
//    }


}
